//////////////////////////////////////////////////////////////////////////

#ifndef _PACKET_H_
#define _PACKET_H_

//////////////////////////////////////////////////////////////////////////

#ifndef _BUFFER_H_
#include "buffer.h"
#endif

//////////////////////////////////////////////////////////////////////////


/** Base class for client and server packets
*
*  @author   Roman Pasechnik
*  @since    Jul 04th, 2009
*  @updated  Nov 06th, 2009
*/
class Packet
{
//////////////////////////////////////////////////////////////////////////

public:

//////////////////////////////////////////////////////////////////////////


    /** Packet codes */
    enum PacketCode
    {
        CLIENT_CONNECTED,
        SERVER_ACCEPTED_CLIENT,
        CLIENT_DISCONNECTED,
        CLIENT_INPUT,
        CLIENT_INFO,
        SERVER_STATE,
        SERVER_INFO
    };


//////////////////////////////////////////////////////////////////////////


    /** Destructor */
    virtual ~Packet();


////////////////////////////////////////////////////////////////////////////


    /** Get packet code */
    virtual PacketCode GetPacketCode() const = 0;


////////////////////////////////////////////////////////////////////////////
};


////////////////////////////////////////////////////////////////////////////

#endif

////////////////////////////////////////////////////////////////////////////
